<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Document</title>
	</head>
	<body>
		
	</body>
</html>
<script>
	console.log("Hello, world!");
	// 严格模式下要使用一个变量, 必须先声明或定义变量
	// "use strict";
	c = 20;
	console.log(c);
	

	// 变量
	// 程序运行期间值可以被改变的量

	// 声明一个变量
	var a;
	console.log(a);

	// 定义一个变量, 声明以后赋值
	var b = 5;
	console.log(b);

	// 变量名的命名规范
	// 1. 变量名由数字, 字母, 下划线, $符号组成, 注意数字不能开头
	// 2. 大小驼峰命名法|描述+元素名称
	// 大驼峰: AppleCount 小驼峰: appleColor |  redBoxDiv | red_box_div
	// 3. 见名知意
	// 4. 不要同系统关键字或保留字相同
	// 比如不能起这样的名字: var function class window document等

	// 错误写法
	// var 1a = 20;
	// console.log(1a);

	// 错误写法
	// var var = 5;
	// console.log(var);


	// 运算符
	// 按照操作数的不同, 可以把运算符分为一元运算符(单目运算符), 二元运算符(双目运算符), 三元运算符(三目运算符)

	// a + b, 二元运算符
	// !a, 一元运算符
	// a > b ? 5 : 3 三元运算符


	// 算术运算符 + - * / %

	// 定义或声明多个变量的写法
	var a = 5, b = 3, c;
	c = a + b;
	console.log(c);

	c = a - b;
	console.log(c);

	c = a * b;
	console.log(c);

	c = a / b;
	// Math.floor向下取整 比如1.9向下取整是1
	console.log(Math.floor(c));

	c = a % b;
	console.log(c);

	c = 10 % 100;
	console.log(c);

	// typeof可以查看数据类型
	// 常用的数据类型
	// number数字类型
	var num = 5.6;
	console.log(typeof num);

	// string 字符串类型
	var str = "我爱你";
	var str2 = ', 祖国';
	console.log(typeof str);
	console.log(typeof str2);
	var str3 = str + str2;
	console.log(str3);

	// 字符串和字符串相加会对字符串进行拼接
	// 字符串和数字进行相加会把数字转化成字符串
	var str4 = 1 + 5 + "6" + 1 + 2;
	console.log(str4);

	var str5 = 1 + 4 * 5 + 8;
	console.log(str5);

	// * / % -会把字符串转化成数字后再进行运算
	var str6 = (4 + "6") * "3" + 2;
	console.log(str6);
	console.log(typeof str6);

	// 结果是NaN(Not a Number)
	var str7 = "我" * 5;
	console.log(str7);
	// 不是数字的数字类型
	console.log(typeof str7);

	// undefined 未定义类型
	var str8;
	console.log(typeof str8);

	// 双引号里面可以嵌套单引号, 单引号中可以嵌套双引号, 双引号中不能嵌套双引号, 单引号中不能嵌套单引号
	// var str9 = "我爱你, "祖国"";
	// console.log(str9);

	var str10 = '我爱你, "祖国"';
	console.log(str10);

	var str11 = "祖国, '我爱你'";
	console.log(str11);

	// \"代表", \'代表', \\代表\, \转义字符
	var str12 = "徐旺说: \"他\"喜欢\\小奶狗\"";
	console.log(str12);

	var str13 = '你好\'吗\'?';
	console.log(str13);

	// boolean | bool 布尔, 有真假两种情况, 一般用于条件语句中的判断
	var bool1 = true;
	var bool2 = false;
	console.log(typeof bool1);
	console.log(typeof bool2);

	// null 空, 是object类型
	console.log(typeof null);

	// object类型
	var stu = {
		name: "小明",
		age: 18,
		gender: "女"
	};
	console.log(typeof stu);



	// 比较运算符 ==, <, >, <=, >=, !=, ===, !==
	// 返回真(true)或者假(false)

	var result1 = 4 == 5;
	console.log(result1);

	var result2 = "徐旺" == "男人";
	console.log(result2);

	var result3 = -5 < -4;
	console.log(result3);

	// 数字与字符串数字进行比较, 会先把字符串转化成数字, 再进行比较
	var result4 = 65 > "32";
	console.log(result4);

	// 字符串比较, 会按顺序比较字符串中的字符的大小(对应的ASCII码表中的值)
	var result5 = "121" > "12";
	console.log(result5);

	// <= 小于等于
	var result6 = 4 <= 4;
	console.log(result6);

	var result7 = 5 >= 4;
	console.log(result7);

	var result8 = "白玉鹏" != "男人";
	console.log(result8);

	// == 会把两边的数据转化成同一个类型
	var result9 = 5 == "5";
	console.log(result9);

	// === 是全等的意思, 会先判断类型, 再判断值
	var result10 = 5 === "5";
	console.log(result10);


	// !== 也会先判断类型, 再判断值



	// 赋值运算符
	// =
	// -=, +=, *=, /=, %= (复合赋值运算符)
	var num = 5;
	num += 1; // => num = num + 1;
	console.log(num);
	num += 5;
	console.log(num);

	num -= 2; // => num = num - 2;
	console.log(num);

	num *= 2;
	console.log(num);

	num /= 2;
	console.log(num);

	num %= 2; // => num = num % 2;
	console.log(num);

	










</script>